'''
Created on 16/04/2012

@author: rcasal
'''



if 0:
    None
    import gluon
    global db; db = gluon.sql.DAL()
    global dbAfiliaciones; dbAfiliaciones = gluon.sql.DAL()
    from AfiliadoRepository import AfiliadoRepository
    from DatosComunesRepository import CodTipoDocumentoRepository
    
class AfiliadoServices(object):
    '''
    classdocs
    '''
    @staticmethod 
    def findAfiliadoByTipoDocAndNroDoc(tipo, numero):
        return AfiliadoRepository.findAfiliadoByTipoDocAndNroDoc(tipo, numero)
    
    @staticmethod 
    def findAfiliadoByCuil(cuil):
        return AfiliadoRepository.findAfiliadoByCuil(cuil)
    
    @staticmethod   
    def findAll():
        return AfiliadoRepository.findAll() 
    
    @staticmethod 
    def check_afiliado_por_tipo_nro_doc(tipo_documento, nro_documento):
        if tipo_documento == "" or nro_documento == "":
            return "{error: 'Ingresar tipo y nro de documento'}"
        
        afiliados = AfiliadoRepository.findAfiliadoByTipoDocAndNroDoc(tipo_documento, nro_documento)
        if len(afiliados) == 0:
            return "{error: 'Afiliado no encontrado'}"
        
        if len(afiliados) > 1:
            res = "{error: 'Mas de un afiliado encontrado', afiliados:["
            for afiliado in afiliados:
                desc_tipo_documento = CodTipoDocumentoRepository.findById(afiliado.DocumentoTipo).Codigo
                res = res + "{nombre: '%s', apellido:'%s', tipo_documento: '%s', nro_documento: '%s', cuil:'%s'}," %(afiliado.Nombres, afiliado.Apellido, desc_tipo_documento, afiliado.DocumentoNro, afiliado.CUIL)
            res = res + "]}"
            return  res
        afiliado = afiliados[0]
        desc_tipo_documento = CodTipoDocumentoRepository.findById(tipo_documento).Codigo
        return "{error: '', nombre: '%s', apellido: '%s', tipo_documento: '%s', nro_documento: '%s', cuil: '%s'}" %(afiliado.Nombres, afiliado.Apellido, desc_tipo_documento, afiliado.DocumentoNro, afiliado.CUIL)

    @staticmethod
    def buscar_afiliado_condicion_por_cuil(cuil):
        afiliado = AfiliadoRepository.findAfiliadoByCuil(cuil)
        plan = AfiliadoRepository.findAfiliadoCondicionById(afiliado.id) 
        desc_tipo_documento = CodTipoDocumentoRepository.findById(afiliado.DocumentoTipo).Codigo
        if plan:
            return "{nombre: '%s', apellido: '%s', tipo_documento: '%s', nro_documento: '%s', cuil: '%s', plan: '%s', fecha_baja: '%s', motivo_baja: '%s'}" %(afiliado.Nombres, afiliado.Apellido, desc_tipo_documento, afiliado.DocumentoNro, afiliado.CUIL, plan.nombre, plan.fechaBaja, plan.motivoBaja)
        return "{nombre: '%s', apellido: '%s', tipo_documento: '%s', nro_documento: '%s', cuil: '%s', plan: '%s', fecha_baja: '%s', motivo_baja: '%s'}" %(afiliado.Nombres, afiliado.Apellido, desc_tipo_documento, afiliado.DocumentoNro, afiliado.CUIL, "No encontrado - Verificar en Afiliaciones", "Sin datos", "Sin datos")

        
        